AWSシステムマネージャー : SSMについて知っておくべきこと。
AWSシステムマネージャー (SSM)
SSM(AWS Systems Manager)は、AWS、オンプレミス、その他のクラウドなど、あらゆるインフラでサーバを管理するためのエージェントベースのプラットフォームです。EC2インスタンスを管理するために、Amazonはリモートコマンドを実行するEC2 Run Commandや、Chef Agentによる構成管理を行うAWS OpsWorksといった、緩やかに連携したサービスを提供していた。しかし、すべてのサーバーを簡単かつ効率的に管理するためのソリューションがない、というギャップがありました。そこで、その穴を埋めるべく登場したのがSSMです。
SSMの特徴
Run Command
これにより、管理対象サーバーに対してアドホックなリモートコマンドを実行できるようになりました。以前は、Ansible、Bastion Hosts、その他の類似サービスを利用して、リモート・サーバーに対してアドホック・コマンドを実行していました。これらのソリューションはすべて、使用する前にかなりの量の設定が必要で、誰が何をしているかを判断する簡単な方法もありません。AWS Identity and Access Management (IAM) と統合することで、SSMはリモートコマンド実行の制御を大幅に改善することができます。また、リモートコマンドの記録は監査目的で保存されます。また、頻繁に使用するコマンドについては、SSMのドキュメントを作成することができます。
ステートマネージャー
時代とともに変化していくものですから、私たちの環境では、セキュリティや運用の面で最善の原則を遵守し続けることが問題になっています。ステートマネージャーは、SSM文書を利用したコマンド群を定期的に実行することで、アプリケーション環境の適切な状態を非常に簡単に維持することができます。もし私たちがどのインスタンスでもSSHを許可したくない場合、私たちは30分ごとに私たちのすべてのサーバー上のSSHデーモンをシャットオフするSSMドキュメントをスケジュールすることができます。
オートメーション
これは、以前紹介したRun Commandの機能をアップグレードしたもので、インスタンス上でリモートコマンドを実行できるようにしたものです。自動化ではリモート命令以外にも、例えば実行の一部としてAWSのAPIを利用することができます。SSM自動化タイプのドキュメントを利用することで、多くの段階を組み合わせて複雑なタスクを完了させることもあります。なお、SSMサービス上で動作する自動ドキュメントの最大実行時間 AWSアカウントとAWSリージョンあたり、1,000,000秒となります。
インベントリー
ほとんどの場合、サーバー上でどのようなアプリケーションやサービスが稼働しているかを知りたいと思います。SSM インベントリーは、SSMドキュメントをマネージドインスタンスにリンクさせ、定期的にインベントリデータを収集し、後で検査できるようにすることができます。
パッチマネージャー
新しいパッチを適用して環境を最新の状態に保つために最も重要な機能の1つです。SSM Patch Managerを使用することで、パッチのベースラインを定義し、メンテナンスウィンドウの間に管理対象インスタンスに適用することができます。これは、メンテナンスウィンドウの時間が来るたびに自動的に行われるため、手動での見落としの可能性を減らすことができます。
メンテナンスウィンドウ
SSMは、私たちの環境上で実行される一連のタスクを定期的にスケジュールする機能を提供します。この期間中に、パッチ修正、ソフトウェアのインストール、OSのアップグレードを行うことができます。SSMのRunコマンドやオートメーション機能をメンテナンス期間中に利用することができます。
コンプライアンス
これは、インスタンスがパッチベースラインまたはStates Managerアソシエーションに準拠しているかどうかを教えてくれるSSMのレポート方法です。この機能は、問題をより深く掘り下げ、SSM Runコマンドまたはオートメーションを使用して解決するために使用することができます。
パラメータストア
この機能は、AWS KMSサービスを利用することで、データベースのパスワードや、SSMドキュメントに記載したい重要なパラメータが漏れる可能性を防ぐことができます。これはSSMの小さな部分ですが、サービスが効果的に動作するために必要なものです。
ドキュメント
SSMには、Run Commands、Automation、States Managerで使用することができる多くの既成のドキュメントが付属しています。また、独自にドキュメントを作成することも可能です。SSMのドキュメント権限はAWS IAMと連携しており、AWS IAMのポリシーを使って誰がどのドキュメントの実行権限を持つか管理できるようになっている。
コンカレンシー
コマンドや自動化ドキュメントを並列に実行するために、SSMでは対象インスタンスの割合や数を指定することができます。また、エラーを投げるターゲット・インスタンスの数がある閾値に達した場合、オペレーションを停止することもあります。
セキュリティ
セキュリティはあらゆるシステムの重要な要素であり、SSMエージェントはサーバーのルートとして実行されるため、そのセキュリティをよりよく理解するのに役立ちます。
- SSMエージェントは、SSMサービスから保留中の注文を取得し、プル機構を介してインスタンス上で実行する。
- SSMエージェントとサービス間の通信は、HTTPSプロトコルを採用した安全なチャネルを介して行われます。
- SSMエージェントのコードはオープンソースなので、その内容を正確に見ることができます。
- すべてのAPIコールをログに記録するために、SSMサービスはAWS CloudTrailと連携することができます。
Conclusion:
全体として、AWS Systems Managerは、どこからでもサーバーを管理できる、機能豊富な本番環境向けのAWSツールです。